home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib07.dsk / APPLE FINANCIER - PART V.bas < prev    next >
BASIC Source File  |  2023-02-26  |  23KB  |  438 lines

  1. 100  REM  ----------------------
  2. 101  REM  FINANCIAL PROGRAM DISK
  3. 102  REM     <ARIES SOFTWARE>
  4. 103  REM       LARRY ABRAMS
  5. 104  REM   COPYRIGHT (C) 1981 BY
  6. 105  REM     MICRO-SPARC, INC.
  7. 106  REM   VERSION 1.4  12.01.81
  8. 107  REM    MODS 700,6000 NEW
  9. 108  REM     APPLESOFT BASIC
  10. 109  REM  ----------------------
  11. 110 :
  12. 200  REM  MENU
  13. 201  ONERR  GOTO 500
  14. 202  HOME : VTAB 2: HTAB 12: INVERSE : PRINT " SELECT ONE OF THE FOLLOWING ": NORMAL : GOSUB 400
  15. 204 G$ =  CHR$(7)
  16. 210  PRINT  TAB( 9)"STRAIGHT LINE DEPRECIATION  <1>"
  17. 220  PRINT  TAB( 3)"VAR RATE - DECL BAL DEPRECIATION  <2>"
  18. 230  PRINT  TAB( 12);"ACCRUED SIMPLE INTEREST  <3>"
  19. 240  PRINT  TAB( 18);"COMPOUND INTEREST  <4>"
  20. 250  PRINT  TAB( 10);"UNEARNED INTEREST REBATES  <5>"
  21. 260  PRINT  TAB( 5);"LINEAR REGRESSION / TREND LINE  <6>"
  22. 280  PRINT  TAB( 14)"DIRECT REDUCTION LOAN  <8>"
  23. 290  PRINT  TAB( 14);"AMORTIZATION SCHEDULE  <9>"
  24. 292  GOSUB 400: PRINT  TAB( 24);"<RETURN> TO QUIT":VT =  PEEK(37) +2
  25. 293 HT = 30: VTAB VT: HTAB HT: CALL  -868: PRINT "WHICH":HT = 38:LS = 1: GOSUB 902:ANS =  VAL(CS$): IF  LEN(CS$) = 0  THEN  END 
  26. 295  IF  STR$(ANS) < >CS$  OR ANS = 0  THEN  PRINT G$;: GOTO 293
  27. 296  ON ANS GOTO 1000,2000,3000,4000,5000,6000,7000,8000,9000
  28. 298 :
  29. 300  REM  PRINT USING
  30. 302 P$ =  STR$( INT((P +.005) *100))
  31. 304  IF  LEN(P$) <3  THEN P$ =  LEFT$("000",(3 - LEN(P$))) +P$
  32. 305 PP$ =  LEFT$(P$,( LEN(P$) -2))
  33. 306  IF DP = 0  THEN P$ = PP$: GOTO 308
  34. 307 P$ = PP$ +"." + RIGHT$(P$,DP)
  35. 308 P$ =  RIGHT$("          " +P$,PL)
  36. 310  RETURN 
  37. 312 :
  38. 400  FOR DOT = 0 TO 39: PRINT ".";: NEXT DOT: RETURN 
  39. 402 :
  40. 500  REM  ERROR HANDLING ROUTINE
  41. 502  HOME : VTAB 5: INVERSE : PRINT "CHECK APPLESOFT MANUAL PG 136 FOR ERR": NORMAL 
  42. 504  PRINT : PRINT "ERROR IS NUMBER "; PEEK(222): PRINT "LOCATED IN LINE "; PEEK(218) + PEEK(219) *256: POKE 34,0: END 
  43. 505 :
  44. 600  REM  DAYS BETWEEN DATES
  45. 602  HOME : VTAB 5:A(4) = 0: PRINT "BEGINNING DATE  ";: GOSUB 606:A(4) = ND: PRINT 
  46. 604  PRINT "   ENDING DATE  ";: GOSUB 606:A(4) = ND -A(4): RETURN 
  47. 606  PRINT  CHR$(91);"YY"; CHR$(93);"YY.MMDD: ";: INPUT "";DTE
  48. 608 YRS =  INT(DTE):MOS =  INT((DTE -YRS) *100):DAYS =  INT((DTE -YRS -MOS/100) *1E4 +.5)
  49. 610 YRS = YRS -1900 *(YRS >99)
  50. 612  REM  ACTUAL DAYS (365)
  51. 613 YY = YRS -(MOS < = 2)
  52. 614 LD =  INT(.4 *MOS +2.3) *(MOS >2)
  53. 616 ND = 365 *YRS +31 *(MOS -1) +DAYS + INT(YY/4) -LD: RETURN 
  54. 618 :
  55. 620  REM  BANKING YEAR (360)
  56. 622 LD = DAYS
  57. 624  IF DAYS < >31  THEN 630
  58. 626  IF A(4) >0  AND PDAYS <30  THEN 630
  59. 628 LD = 30
  60. 630 ND = 360 *YRS +30 *MOS +LD:PDAYS = DAYS: RETURN 
  61. 632 :
  62. 700  REM  SCREEN DUMP TO PRINTER
  63. 702 LOC =  PEEK(105) + PEEK(106) *256 +2
  64. 704  PRINT  CHR$(4)"PR#1"
  65. 706  FOR LINE = TLINE TO BLINE
  66. 708  VTAB (LINE): CALL  -990
  67. 710  POKE LOC,40: POKE LOC +1, PEEK(40): POKE LOC +2, PEEK(41)
  68. 712  PRINT SCR$: NEXT LINE
  69. 714  PRINT  CHR$(4)"PR#0"
  70. 716  RETURN 
  71. 718 :
  72. 900  REM  DATA INPUT
  73. 901  FOR I = 0 TO LS:NS$(I) = " ": NEXT I:CS$ = ""
  74. 902  FOR I = 0 TO LS
  75. 904  VTAB VT: HTAB HT +I: GET NS$: IF NS$ =  CHR$(13)  THEN NS$(I) = "": GOTO 930
  76. 906  IF NS$ =  CHR$(8)  OR NS$ =  CHR$(21)  THEN 910
  77. 908  IF NS$ =  CHR$(44)  OR NS$ =  CHR$(58)  OR  ASC(NS$) <32  THEN  PRINT G$;: GOTO 904
  78. 910  IF NS$ =  CHR$(8)  AND I = 0  THEN 904
  79. 912  IF NS$ =  CHR$(8)  THEN I = I -1: GOTO 904
  80. 913  IF NS$ =  CHR$(21)  AND I <LS  THEN I = I +1: GOTO 904
  81. 914  IF I = LS  AND NS$ < > CHR$(13)  THEN  PRINT G$;: GOTO 904
  82. 916 NS$(I) = NS$: VTAB VT: HTAB HT +I:: PRINT NS$(I): NEXT I
  83. 930 AL = I:I = LS: NEXT I:CS$ = ""
  84. 932  FOR I = 0 TO AL -1:CS$ = CS$ +NS$(I): NEXT I
  85. 934  IF CS$ =  CHR$(13)  OR CS$ = ""  THEN  VTAB VT: HTAB HT: PRINT  SPC( LS): GOTO 938
  86. 936  VTAB VT: HTAB HT: PRINT CS$; SPC( LS - LEN(CS$))
  87. 938  PRINT : RETURN 
  88. 940 :
  89. 1000  REM  STRAIGHT LINE DEPRECIATION
  90. 1002 :
  91. 1004  REM  PROGRAM INSTRUCTIONS
  92. 1006  CLEAR :DP = 0:G$ =  CHR$(7): HOME : VTAB 10
  93. 1008  PRINT "INSTRUCTIONS? ";: POKE  -16368,0: GET ANS$: IF  LEFT$(ANS$,1) < >"Y"  THEN  HOME : VTAB 10: GOTO 1102
  94. 1010  HOME : VTAB 5: PRINT "  STRAIGHT LINE DEPRECIATION SCHEDULE": GOSUB 400
  95. 1012  PRINT "THE ANNUAL DEPRECIATION ALLOWANCE USING"
  96. 1014  PRINT "THIS METHOD IS DETERMINED BY DIVIDING"
  97. 1016  PRINT "THE COST (STARTING BOOK VALUE) LESS ITS"
  98. 1018  PRINT "ESTIMATED SALVAGE VALUE BY ITS USEFUL"
  99. 1020  PRINT "LIFE EXPECTANCY.  THAT IS:": PRINT 
  100. 1022  INVERSE : PRINT " DEPRECIATION ";: NORMAL : PRINT "=": PRINT 
  101. 1024  PRINT "(START BK VAL - SALVAGE VAL) / (LIFE)": PRINT 
  102. 1026 :
  103. 1100  REM  INPUT STARTING,SALVAGE,LIFE
  104. 1102  PRINT "1. STARTING BOOK VALUE ";: IF FLAG  THEN  PRINT A(1): GOTO 1106
  105. 1104  INPUT A(1)
  106. 1106  PRINT "2. SALVAGE VALUE"; TAB( 24);: IF FLAG  THEN  PRINT A(2): GOTO 1110
  107. 1108  INPUT A(2)
  108. 1110  PRINT "3. LIFE EXPECTANCY"; TAB( 24);: IF FLAG  THEN  PRINT A(3): GOTO 1114
  109. 1112  INPUT A(3):FLAG = 1
  110. 1114  PRINT : PRINT "ANY CHANGES? ";: POKE  -16368,0: GET ANS$: PRINT ANS$: IF  LEFT$(ANS$,1) = "N"  THEN 1118
  111. 1116  PRINT : INPUT "WHICH ONE? ";W: PRINT "CHANGE PART ";W;" TO: ";: INPUT A(W): HOME : VTAB 10: GOTO 1102
  112. 1118 BKVLUE = A(1):SALVAGE = A(2):LFE = A(3)
  113. 1120  PRINT : PRINT "DISPLAY ENTIRE SCHEDULE? ";: POKE  -16368,0: GET ANS$: PRINT ANS$
  114. 1122  IF  LEFT$(ANS$,1) = "Y"  THEN I = 0: GOTO 1202
  115. 1124  PRINT "WHICH YEARS (START,END)";: INPUT I,J
  116. 1126 :
  117. 1200  REM  OUTPUT HEADINGS
  118. 1202  HOME : PRINT  TAB( 5);"DEPR"; TAB( 14);"REMAIN"; TAB( 25);"REMAIN"; TAB( 35);"TOTAL"
  119. 1204  PRINT "YR"; TAB( 4);"AMOUNT"; TAB( 12);"DEPR VALUE"; TAB( 23);"BOOK VALUE"; TAB( 35);"DEPREC";
  120. 1206  GOSUB 400: POKE 34,3
  121. 1208 :
  122. 1300  REM  CALCULATIONS/OUTPUT
  123. 1302  IF   NOT I  THEN I = 1:J = LFE
  124. 1304  IF J >LFE  THEN J = LFE
  125. 1306  FOR K = I TO J
  126. 1308 DEP = (BKVLUE -SALVAGE)/LFE:TDEP = K *DEP:RDV = (LFE -K) *DEP:RBV = RDV +SALVAGE
  127. 1310  PRINT  SPC( 1 -(K >9));K; TAB( 4);:PL = 7:P = DEP: GOSUB 300: PRINT P$;:PL = 10:P = RDV: GOSUB 300: PRINT P$;:P = RBV: GOSUB 300: PRINT P$;:P = TDEP: GOSUB 300: PRINT P$;: REM  
  128. 1312  NEXT K
  129. 1314 :
  130. 1400  REM  PROGRAM ENDING
  131. 1402  PRINT : VTAB 24: POKE 34,0
  132. 1404  PRINT "ANOTHER RUN? ";: POKE  -16368,0: GET ANS$: PRINT ANS$: IF  LEFT$(ANS$,1) = "Y"  THEN  HOME : VTAB 12: GOTO 1102
  133. 1406  GOTO 200: REM  RETURN TO MENU
  134. 1408 :
  135. 2000  REM  VARIABLE RATE - DECLINING BALANCE DEPRECIATION
  136. 2002 :
  137. 2004  REM  PROGRAM INSTRUCTIONS
  138. 2006  CLEAR :DP = 0:G$ =  CHR$(7): HOME : VTAB 10
  139. 2008  PRINT "INSTRUCTIONS? ";: POKE  -16368,0: GET ANS$: IF  LEFT$(ANS$,1) < >"Y"  THEN  HOME : VTAB 10: GOTO 2102
  140. 2010  HOME : VTAB 2: PRINT  TAB( 4)"VARIABLE RATE - DECLINING BALANCE": PRINT  TAB( 10)"DEPRECIATION SCHEDULE": GOSUB 400
  141. 2012  PRINT "THIS METHOD PROVIDES FOR MORE DEPRECIA-": PRINT "TION IN EARLIER YEARS AND DECREASING": PRINT "DEPRECIATION IN LATER YEARS."
  142. 2014  PRINT "THE VARIABLE RATE IS A FACTOR (E.G. 1.5": PRINT "OR 1.25) THAT'S THE SAME AS A DECLINING BALANCE PERCENTAGE."
  143. 2016  PRINT 
  144. 2018  PRINT "THIS SCHEDULE WILL ALSO GIVE THE CROSS-": PRINT "OVER POINT (HI-LIGHTED), WHERE THE": PRINT "SWITCH FROM THIS METHOD TO THE STRAIGHT"
  145. 2020  PRINT "LINE METHOD SHOULD BE MADE.  AT THIS": PRINT "POINT, STRAIGHT LINE DEPRECIATION IS"
  146. 2022  PRINT "GREATER THAN THAT BY THE DECLINING": PRINT "BALANCE METHOD."
  147. 2024  PRINT 
  148. 2026 :
  149. 2100  REM  INPUT STARTING,SALVAGE,LIFE,FACT
  150. 2102  PRINT "1. STARTING BOOK VALUE ";: IF FLAG  THEN  PRINT A(1): GOTO 2106
  151. 2104  INPUT A(1)
  152. 2106  PRINT "2. SALVAGE VALUE"; TAB( 24);: IF FLAG  THEN  PRINT A(2): GOTO 2110
  153. 2108  INPUT A(2)
  154. 2110  PRINT "3. LIFE EXPECTANCY"; TAB( 24);: IF FLAG  THEN  PRINT A(3): GOTO 2114
  155. 2112  INPUT A(3)
  156. 2114  PRINT "4. RATE FACTOR"; TAB( 24);: IF FLAG  THEN  PRINT A(4): GOTO 2118
  157. 2116  INPUT A(4):FLAG = 1
  158. 2118  PRINT : PRINT "ANY CHANGES? ";: POKE  -16368,0: GET ANS$: PRINT ANS$: IF  LEFT$(ANS$,1) = "N"  THEN 2122
  159. 2120  PRINT : INPUT "WHICH ONE? ";W: PRINT "CHANGE PART ";W;" TO: ";: INPUT A(W): HOME : VTAB 10: GOTO 2102
  160. 2122 BKVLUE = A(1):SALVAGE = A(2):LFE = A(3):FACT = A(4)
  161. 2124  PRINT : PRINT "DISPLAY ENTIRE SCHEDULE?";: POKE  -16368,0: GET ANS$: PRINT ANS$
  162. 2126  IF  LEFT$(ANS$,1) = "Y"  THEN I = 0: GOTO 2202
  163. 2128  PRINT "WHICH YEARS (START,END)";: INPUT I,J
  164. 2130 :
  165. 2200  REM  OUTPUT HEADING
  166. 2202  HOME : PRINT  TAB( 5);"DEPR"; TAB( 14);"REMAIN"; TAB( 25);"REMAIN"; TAB( 35);"TOTAL"
  167. 2204  PRINT "YR"; TAB( 4);"AMOUNT"; TAB( 12);"DEPR VALUE"; TAB( 23);"BOOK VALUE"; TAB( 35);"DEPREC"
  168. 2206  GOSUB 400: POKE 34,3
  169. 2208 :
  170. 2300  REM  CALCULATION/OUTPUT
  171. 2302  IF   NOT I  THEN I = 1:J = LFE
  172. 2304  IF J >LFE  THEN J = LFE
  173. 2306  FOR K = 1 TO J
  174. 2308 DEP = (1 -FACT/LFE) ^(K -1) *(FACT/LFE) *BKVLUE:TDEP = (1 -((1 -FACT/LFE) ^(K))) *BKVLUE
  175. 2310 RDV = BKVLUE -SALVAGE -TDEP:RBV = RDV +SALVAGE
  176. 2312  IF (LFE -K) *DEP <RDV  THEN  INVERSE 
  177. 2314  PRINT  SPC( 1 -(K >9));K; TAB( 4);:PL = 7:P = DEP: GOSUB 300: PRINT P$;:PL = 10:P = RDV: GOSUB 300: PRINT P$;:P = RBV: GOSUB 300: PRINT P$;:P = TDEP: GOSUB 300: PRINT P$;: REM 
  178. 2316  NEXT K: NORMAL 
  179. 2318 :
  180. 2400  REM  PROGRAM ENDING
  181. 2402  PRINT : VTAB 24: POKE 34,0
  182. 2404  PRINT "ANOTHER RUN? ";: POKE  -16368,0: GET ANS$: PRINT ANS$: IF  LEFT$(ANS$,1) = "Y"  THEN  HOME : VTAB 12: GOTO 2102
  183. 2406  GOTO 200: REM  RETURN TO MENU
  184. 2408 :
  185. 3000  REM  ACCRUED INTEREST
  186. 3002  CLEAR :DP = 2:G$ =  CHR$(7)
  187. 3004  HOME : VTAB 5: PRINT "ENTER A ZERO FOR ITEM TO CALCULATE:": PRINT 
  188. 3006  PRINT "1. BEGINNING AMOUNT"; TAB( 28);: IF FLAG  THEN  PRINT A(1): GOTO 3010
  189. 3008  INPUT A(1)
  190. 3010  PRINT "2. ANNUAL INTEREST RATE %"; TAB( 28);: IF FLAG  THEN  PRINT A(2): GOTO 3014
  191. 3012  INPUT A(2)
  192. 3014  PRINT "3. FUTURE AMOUNT"; TAB( 28);: IF FLAG  THEN  PRINT A(3): GOTO 3022
  193. 3016  INPUT A(3)
  194. 3018 FLAG = 0: VTAB 10: CALL  -958: PRINT : PRINT "DO YOU WISH TO CALCULATE THE NUMBER": INPUT "OF DAYS BETWEEN TWO DATES? ";ANS$
  195. 3020  IF  LEFT$(ANS$,1) = "Y"  THEN FLAG = 1: GOSUB 600: GOTO 3004
  196. 3022  VTAB 10: CALL  -958: PRINT "4. NUMBER OF DAYS"; TAB( 28);: IF FLAG  THEN  PRINT A(4): GOTO 3026
  197. 3024  INPUT A(4):FLAG = 1
  198. 3026  VTAB 15: INVERSE : PRINT " TYPE 'END' TO RETURN TO MENU ": NORMAL : PRINT : INPUT "ANY CHANGES? ";ANS$
  199. 3028  IF  LEFT$(ANS$,1) = "N"  THEN 3102
  200. 3030  IF  LEFT$(ANS$,1) = "E"  THEN 200
  201. 3032  INPUT "WHICH PART? ";W: IF W = 4  THEN 3018
  202. 3034  PRINT "CHANGE PART ";W;" TO: ";: INPUT A(W): GOTO 3004
  203. 3036 :
  204. 3100  REM  CALCULATION SECTION
  205. 3102  IF A(1) = 0  THEN A(1) = A(3)/(1 +(A(2)/36500 *A(4))):A(1) =  INT(A(1) *100 +.5)/100
  206. 3104  IF A(2) = 0  THEN A(2) = (A(3) -A(1)) *36500/(A(1) *A(4)):A(2) =  INT(A(2) *100 +.5)/100
  207. 3106  IF A(3) = 0  THEN A(3) = A(2)/36500 *A(1) *A(4):A(3) =  INT((A(1) +A(3)) *100 +.5)/100
  208. 3108  IF A(4) = 0  THEN A(4) = (A(3) -A(1))/(A(1) *A(2)/36500):A(4) =  INT(A(4) +.5)
  209. 3110  GOTO 3004
  210. 3112 :
  211. 4000  REM  COMPOUND INTEREST SECTION
  212. 4002  CLEAR :G$ =  CHR$(7)
  213. 4004  HOME : VTAB 5: PRINT "1. AMOUNT TO BE COMPOUNDED"; TAB( 30);: IF FLAG  THEN  PRINT A(1): GOTO 4008
  214. 4006  INPUT A(1)
  215. 4008  PRINT "2. YRLY INTEREST RATE (MAX)"; TAB( 30);: IF FLAG  THEN  PRINT A(2): GOTO 4012
  216. 4010  INPUT A(2)
  217. 4012  PRINT "3. CHANGE IN INTEREST RATE"; TAB( 30);: IF FLAG  THEN  PRINT A(3): GOTO 4020
  218. 4014  INPUT A(3)
  219. 4016 FLAG = 0: VTAB 8: CALL  -958: PRINT : PRINT "DO YOU WISH TO CALCULATE THE NUMBER": INPUT "OF DAYS BETWEEN TWO DATES? ";ANS$
  220. 4018  IF  LEFT$(ANS$,1) = "Y"  THEN FLAG = 1: GOSUB 600: GOTO 4004
  221. 4020  VTAB 8: CALL  -958: PRINT "4. NUMBER OF DAYS"; TAB( 30);: IF FLAG  THEN  PRINT A(4): GOTO 4024
  222. 4022  INPUT A(4):FLAG = 1
  223. 4024  VTAB 15: INVERSE : PRINT " TYPE 'END' TO RETURN TO MENU ": NORMAL : PRINT : INPUT "ANY CHANGES? ";ANS$
  224. 4026  IF  LEFT$(ANS$,1) = "N"  THEN 4034
  225. 4028  IF  LEFT$(ANS$,1) = "E"  THEN 200
  226. 4030  INPUT "WHICH PART? ";W: IF W = 4  THEN 4016
  227. 4032  PRINT "CHANGE PART ";W;" TO: ";: INPUT A(W): GOTO 4004
  228. 4034 AMT = A(1):IR = A(2):IC = A(3):DAYS = A(4)
  229. 4036 CP(1) = 360:CP(2) = 365:CP(3) = 12:CP(4) = 4
  230. 4038 :
  231. 4100  REM  OUTPUT HEADINGS
  232. 4102  HOME : VTAB 2: INVERSE : PRINT " COMPOUNDING $";AMT;" FOR ";DAYS;" DAYS. ": NORMAL : PRINT 
  233. 4104  PRINT "PCNT"; TAB( 7);"360 DAY"; TAB( 16);"365 DAY"; TAB( 26);"MONTH"; TAB( 34);"QUARTER";
  234. 4106  GOSUB 400: PRINT 
  235. 4108 :
  236. 4200  REM  CALCULATIONS/OUTPUT
  237. 4202 PL = 4:DP = 0:P = IR *100: GOSUB 300: PRINT P$;
  238. 4204  FOR X = 1 TO 4
  239. 4206 I = IR/(CP(X) *100)
  240. 4208 TIME =  INT(DAYS/ INT(365/CP(X)))
  241. 4210 FUTAMT = AMT *(1 +I) ^TIME
  242. 4212 PL = 9:DP = 2:P = FUTAMT
  243. 4214  GOSUB 300: PRINT P$;
  244. 4216  NEXT X
  245. 4218 :
  246. 4220  REM  TEST FOR PROGRAM END
  247. 4222 IR = IR -IC: IF  PEEK(37) <21  AND IR >0  THEN 4202
  248. 4224  VTAB 24: HTAB 26: PRINT "PRESS ANY KEY ";: CALL  -756: GOTO 4004
  249. 4226 :
  250. 5000  REM  UNEARNED INTEREST REBATE (RULE OF 78'S)
  251. 5002  CLEAR :DP = 2:G$ =  CHR$(7)
  252. 5004  HOME : VTAB 5: PRINT "1. TOTAL NUMBER OF PAYMENTS"; TAB( 30);: IF FLAG  THEN  PRINT A(1): GOTO 5008
  253. 5006 VT = 5:HT = 30:LS = 2: VTAB VT: HTAB HT: CALL  -868: GOSUB 900:A(1) =  VAL(CS$): IF A(1) = 0  OR  STR$(A(1)) < >CS$  THEN  PRINT G$;: GOTO 5006
  254. 5008  PRINT "2. MONTHLY PAYMENT AMOUNT"; TAB( 30);: IF FLAG  THEN  PRINT A(2): GOTO 5012
  255. 5010 VT = 6:HT = 30:LS = 6: VTAB VT: HTAB HT: CALL  -868: GOSUB 900:A(2) =  VAL(CS$): IF A(2) = 0  OR  STR$(A(2)) < >CS$  THEN  PRINT G$;: GOTO 5010
  256. 5012  PRINT "3. TOTAL FINANCE CHARGE"; TAB( 30);: IF FLAG  THEN  PRINT A(3): GOTO 5016
  257. 5014 VT = 7:HT = 30: VTAB VT: HTAB HT: CALL  -868: GOSUB 900:A(3) =  VAL(CS$): IF A(3) = 0  OR  STR$(A(3)) < >CS$  THEN  PRINT G$;: GOTO 5014
  258. 5016  PRINT "4. NUMBER OF PAYMENTS MADE"; TAB( 30);: IF FLAG  THEN  PRINT A(4): GOTO 5020
  259. 5018 VT = 8:HT = 30: VTAB VT: HTAB HT: CALL  -868:LS = 2: GOSUB 900:A(4) =  VAL(CS$):FLAG = 1: IF  STR$(A(4)) < >CS$  THEN  PRINT G$;: GOTO 5018
  260. 5020  VTAB 15: INVERSE : PRINT " TYPE 'END' TO RETURN TO MENU ": NORMAL 
  261. 5022  VTAB 17: HTAB 1: PRINT "ANY CHANGES?":VT = 17:HT = 14: VTAB VT: HTAB HT: CALL  -868:LS = 3: GOSUB 900: IF CS$ < >"Y"  AND CS$ < >"N"  AND  LEFT$(CS$,1) < >"E"  THEN  PRINT G$;: GOTO 5022
  262. 5024 CS$ =  LEFT$(CS$,1): IF CS$ = "E"  THEN 200
  263. 5026  IF CS$ = "N"  THEN 5034
  264. 5028  VTAB 18: HTAB 1: PRINT "WHICH ONE?":VT = 18:HT = 12: VTAB VT: HTAB HT: CALL  -868:LS = 1: GOSUB 900:W =  VAL(CS$): IF  STR$(W) < >CS$  OR W <1  OR W >4  THEN  PRINT G$;: GOTO 5028
  265. 5030  VTAB 19: HTAB 1: PRINT "CHANGE PART ";W;" TO:":VT = 19:HT = 19: VTAB VT: HTAB HT: CALL  -868:LS = 6 -4 *(W = 1  OR W = 4): GOSUB 900:A(W) =  VAL(CS$): IF  STR$(A(W)) < >CS$  THEN  PRINT G$;: GOTO 5030
  266. 5032  GOTO 5004
  267. 5034 NP = A(1):PMT = A(2):FC = A(3):NMADE = A(4)
  268. 5036 :
  269. 5100  REM  OUTPUT HEADING SECTION
  270. 5102  HOME : PRINT "PAYMENT"; TAB( 11);"REMAIN"; TAB( 22);"REBATE"; TAB( 33);"TOTAL"
  271. 5104  PRINT "NUMBER"; TAB( 11);"BALANCE"; TAB( 22);"AMOUNT"; TAB( 32);"INTEREST"
  272. 5106  GOSUB 400
  273. 5108 :
  274. 5200  REM  CALCULATION/OUTPUT
  275. 5202  FOR I = NMADE TO NP
  276. 5204 J = NP -I
  277. 5206 REBTE = ((J *FC) *(J +1))/(NP *(NP +1))
  278. 5208 BAL = (J *PMT) -REBTE
  279. 5210  PRINT  SPC( 3 -(I >9));I;:PL = 7:P = BAL: GOSUB 300: PRINT  TAB( 10);P$;:P = REBTE: GOSUB 300: PRINT  TAB( 21);P$;:P = FC -REBTE: GOSUB 300: PRINT  TAB( 32);P$
  280. 5212 :
  281. 5300  REM  PROGRAM ENDING
  282. 5302  IF  PEEK(37) <22  AND J >0  THEN  NEXT I
  283. 5304  VTAB 24: HTAB 26: PRINT "PRESS ANY KEY ";: CALL  -756: GOTO 5004
  284. 5306 :
  285. 6000  REM  LINEAR REGRESSION
  286. 6002 :
  287. 6004  REM  INITIALIZATION
  288. 6006  CLEAR :SCR$ = "":DP = 2:G$ =  CHR$(7): REM  SCR$ MUST BE FIRST STRING
  289. 6008  TEXT : HOME : VTAB 10: PRINT "INSTRUCTIONS?":VT = 10:HT = 15:LS = 1
  290. 6010  VTAB VT: HTAB HT: CALL  -868: GOSUB 900: IF CS$ = "N"  THEN 6202
  291. 6012  IF CS$ < >"Y"  THEN  PRINT G$;: GOTO 6010
  292. 6014 :
  293. 6100  REM  INSTRUCTIONS
  294. 6102 :
  295. 6104  HOME : VTAB 2: HTAB 6: PRINT "LINEAR REGRESSION - TREND LINE": GOSUB 400
  296. 6106  PRINT "A DETERMINISTIC FORECASTING MODEL CAN BE";: PRINT "REPRESENTED BY FITTING A STRAIGHT LINE": PRINT "THROUGH A GIVEN SET OF POINTS USING THE"
  297. 6108  PRINT "METHOD OF LEAST SQUARES.": PRINT 
  298. 6110  PRINT "ENTER AS MANY KNOWN PAIRS AS POSSIBLE.": PRINT "THEN ";: INVERSE : PRINT "Q";: NORMAL : PRINT "UIT TO GET A CALCULATED LINE OF": PRINT "THE FORM:  F(X) = A + B * X WITH A COEF.";
  299. 6112  PRINT "OF DETERMINATION BETWEEN ZERO AND ONE."
  300. 6114  PRINT : PRINT "ENTER AN INDEPENDENT VARIABLE VALUE AND": PRINT "INCREMENT TO GET A SCREEN OF CALCULATED"
  301. 6116  PRINT "PAIRS INCLUDING THE DESIRED INDIVIDUAL": PRINT "DEPENDENT VALUE ";: INVERSE : PRINT "HILIGHTED.": NORMAL 
  302. 6118  PRINT : PRINT "A COMMAND LINE PRESENTS THE OPPORTUNITY"
  303. 6120  PRINT "TO PRINT, ADD MORE DATA, SAME EQUATION"
  304. 6122  PRINT "OR QUIT."
  305. 6124  INVERSE : VTAB 20: HTAB 4: PRINT "P";: HTAB 15: PRINT "M";: HTAB 26: PRINT "S": VTAB 21: HTAB 4: PRINT "Q": NORMAL 
  306. 6126  VTAB 24: HTAB 6: PRINT "(PRESS ANY KEY TO CONTINUE)";: CALL  -756
  307. 6128 :
  308. 6200  REM  INPUT SECTION / MAIN PROGRAM
  309. 6202 XSUM = 0:YSUM = 0:X2RD = 0:Y2RD = 0:PROD = 0:N = 0
  310. 6204 X = 0:Y = 0: HOME : VTAB 2
  311. 6206  HTAB 5: PRINT "INDEPENDENT"; TAB( 25);"DEPENDENT": HTAB 6: PRINT "VARIABLE"; TAB( 25);"VARIABLE"
  312. 6208  HTAB 4: PRINT "-------------"; TAB( 24);"-----------"
  313. 6210  VTAB 12: HTAB 4: PRINT "ENTER POINT NUMBER:    OR ";: INVERSE : PRINT "Q";: NORMAL : PRINT "UIT.": VTAB 15: GOSUB 400
  314. 6212  VTAB 16: HTAB 4: PRINT "CURRENT STATUS OF VARIABLE SUMS:": PRINT 
  315. 6214  PRINT "INDEPENDENT VARIABLE:": PRINT "  DEPENDENT VARIABLE:": PRINT " INDEPENDENT SQUARES:": PRINT "   DEPENDENT SQUARES:": PRINT "PRODUCT OF VARIABLES:"
  316. 6216 N = N +1
  317. 6218 XSUM = XSUM +X:PL = 14:P = XSUM: GOSUB 300: VTAB 18: HTAB 24: PRINT P$
  318. 6220 YSUM = YSUM +Y:P = YSUM: GOSUB 300: VTAB 19: HTAB 24: PRINT P$
  319. 6222 X2RD = X2RD +X ^2:P = X2RD: VTAB 20: HTAB 24: IF P <1E8  THEN  GOSUB 300: PRINT P$: GOTO 6226
  320. 6224  PRINT  RIGHT$("     " + STR$(P),14)
  321. 6226 Y2RD = Y2RD +Y ^2:P = Y2RD: VTAB 21: HTAB 24: IF P <1E8  THEN  GOSUB 300: PRINT P$: GOTO 6230
  322. 6228  PRINT  RIGHT$("     " + STR$(P),14)
  323. 6230 PROD = PROD +X *Y: VTAB 22: HTAB 24: IF P <1E8  THEN  GOSUB 300: PRINT P$: GOTO 6234
  324. 6232  PRINT  RIGHT$("     " + STR$(P),14)
  325. 6234  VTAB 12: HTAB 24: PRINT N
  326. 6236 VT = 6:HT = 5:LS = 10: VTAB VT: HTAB 1: CALL  -868: GOSUB 900
  327. 6238  IF CS$ = "Q"  THEN 6300
  328. 6240 X =  VAL(CS$)
  329. 6242  IF  STR$(X) < >CS$  OR (X = 0  AND CS$ < >"0")  THEN  PRINT G$;: GOTO 6236
  330. 6244 VT = 6:HT = 25: VTAB VT: HTAB HT: CALL  -868: GOSUB 900
  331. 6246 Y =  VAL(CS$)
  332. 6248  IF  STR$(Y) < >CS$  OR (Y = 0  AND CS$ < >"0")  THEN  PRINT G$;: GOTO 6244
  333. 6250  GOTO 6216
  334. 6252 :
  335. 6300  REM  CALCULATE TREND LINE
  336. 6302 N = N -1
  337. 6304  IF N = 0  THEN 200
  338. 6306  IF N <2  THEN  VTAB 6: HTAB 1: CALL  -868: PRINT G$;"CAN'T CREATE TREND LINE WITH ONE POINT";G$: FOR PA = 1 TO 2000: NEXT : GOTO 6202
  339. 6308 SLOPE = (N *PROD -YSUM *XSUM)/(N *X2RD -XSUM ^2)
  340. 6310 CNST = (YSUM -SLOPE *XSUM)/N
  341. 6312 NUM = SLOPE *(PROD -XSUM *YSUM/N)
  342. 6314 DENOM = Y2RD -YSUM ^2/N
  343. 6316 COEFF = NUM/DENOM
  344. 6318 :
  345. 6400  REM  SET-UP OUTPUT TABLE
  346. 6402  HOME : PRINT "TREND LINE CALCULATED FROM ";N;" POINTS:"
  347. 6404  PRINT "F(X) = "; INT(CNST *1E3 +.5)/1E3;" + ("; INT(SLOPE *1E3 +.5)/1E3;") X"
  348. 6406  PRINT "COEFFICIENT OF DETERMINATION= "; INT(COEFF *1E4 +.5)/1E4
  349. 6408  GOSUB 400
  350. 6410  CALL  -958: VTAB 10: HTAB 1: PRINT "INDEPENDENT VALUE:": REM  GET VALUE
  351. 6412 VT = 10:HT = 20:LS = 10: VTAB VT: HTAB HT: CALL  -868: GOSUB 900
  352. 6414 X =  VAL(CS$): IF  STR$(X) < >CS$  OR (X = 0  AND CS$ < >"0")  THEN  PRINT G$;: GOTO 6412
  353. 6416  PRINT : PRINT "INCREMENTED BY   :": REM  GET CHANGE IN VALUE
  354. 6418 VT = 12:HT = 20:LS = 4: VTAB VT: HTAB HT: CALL  -868: GOSUB 900
  355. 6420 CH =  VAL(CS$)
  356. 6422  IF CS$ < > STR$(CH)  OR (CH = 0  AND CS$ < >"0")  THEN  PRINT G$;: GOTO 6418
  357. 6424 :
  358. 6500  REM  CALCULATION / OUTPUT
  359. 6502  VTAB 5: HTAB 1: CALL  -958: HTAB 4: PRINT "INDEPENDENT";: HTAB 20: PRINT "DEPENDENT": HTAB 7: PRINT "VARIABLE";: HTAB 21: PRINT "VARIABLE": HTAB 4: PRINT "-----------     ---------"
  360. 6504 ST = X -6 *CH:EN = X +6 *CH
  361. 6506  FOR I = ST TO EN  STEP CH
  362. 6508 P = I: GOSUB 300: PRINT P$;: IF I = X  THEN  INVERSE 
  363. 6510 P = SLOPE *I +CNST: GOSUB 300: PRINT P$: NORMAL 
  364. 6512  NEXT I
  365. 6514 :
  366. 6600  REM  PROGRAM ENDING?
  367. 6602  VTAB 22: GOSUB 400: PRINT "PRINT MORE DATA SAME EQUATION OR QUIT:";
  368. 6604  VTAB 23: INVERSE : HTAB 1: PRINT "P";: HTAB 7: PRINT "M";: HTAB 17: PRINT "S";: HTAB 34: PRINT "Q";: NORMAL 
  369. 6606 VT = 23:HT = 39: VTAB VT:LS = 1: HTAB HT: CALL  -868: GOSUB 900
  370. 6608  IF CS$ = "Q"  THEN 6202
  371. 6610  IF CS$ = "S"  THEN  VTAB 5: HTAB 1: GOTO 6410
  372. 6612  IF CS$ = "M"  THEN 6204
  373. 6614  IF CS$ < >"P"  THEN  PRINT G$;: GOTO 6606
  374. 6616 TLINE = 1:BLINE = 21: GOSUB 700: GOTO 6606
  375. 6618 :
  376. 8000  REM  DIRECT REDUCTION LOAN
  377. 8002 :
  378. 8004  REM  PGM INITIALIZATION
  379. 8006  CLEAR :DP = 2:G$ =  CHR$(7)
  380. 8007 :
  381. 8100  REM  MENU / INPUT SECTION
  382. 8102  HOME : VTAB 5
  383. 8104  PRINT "1. MAX BORROW AMOUNT"; TAB( 25);: IF FLAG  THEN  PRINT A(1): GOTO 8108
  384. 8106  INPUT A(1)
  385. 8108  PRINT "2. CHANGE IN AMOUNT"; TAB( 25);: IF FLAG  THEN  PRINT A(2): GOTO 8112
  386. 8110  INPUT A(2)
  387. 8112  PRINT "3. MAX INTEREST RATE"; TAB( 25);: IF FLAG  THEN  PRINT A(3): GOTO 8116
  388. 8114  INPUT A(3)
  389. 8116  PRINT "4. CHANGE IN INT RATE"; TAB( 25);: IF FLAG  THEN  PRINT A(4): GOTO 8120
  390. 8118  INPUT A(4)
  391. 8120  PRINT "5. LOAN TERM (MONTHS)"; TAB( 25);: IF FLAG  THEN  PRINT A(5): GOTO 8124
  392. 8122  INPUT A(5):FLAG = 1
  393. 8124  PRINT : INVERSE : PRINT "TYPE 'END' TO RETURN TO MENU ": NORMAL : VTAB 18: INPUT "ANY CHANGES? ";Y$
  394. 8126  IF  LEFT$(Y$,1) = "N"  THEN 8146
  395. 8128  IF Y$ = "END"  THEN 200
  396. 8130  INPUT "WHICH ONE? ";W: PRINT "CHANGE PART ";W;" TO ";: INPUT A(W): GOTO 8102
  397. 8132 :
  398. 8134  REM  PAYMENT CALCULATION
  399. 8136 I = J/1200
  400. 8138 PMT = (K *I)/(1 -(1 +I) ^( -A(5)))
  401. 8140  RETURN 
  402. 8142 :
  403. 8144  REM  OUTPUT HEADING SECTION
  404. 8146  HOME : HTAB 13: INVERSE : PRINT " TERM: ";A(5);" MONTHS ": NORMAL 
  405. 8148  VTAB 2: PRINT "PRCNT";
  406. 8150  FOR K = A(1) -4 *A(2) TO A(1)  STEP A(2):P$ =  STR$( INT(K)):PL = 7: GOSUB 308: PRINT P$;: NEXT K
  407. 8152  GOSUB 400
  408. 8154 :
  409. 8156  REM  MAIN PROGRAM
  410. 8158 J = A(3)
  411. 8160 P = J:PL = 5: GOSUB 302: PRINT P$;
  412. 8162  FOR K = A(1) -4 *A(2) TO A(1)  STEP A(2)
  413. 8164  GOSUB 8136
  414. 8166 P = PMT:PL = 7: GOSUB 302: PRINT P$;
  415. 8168  NEXT K
  416. 8170 J = J -A(4)
  417. 8172  IF  PEEK(37) <22  AND J >0  THEN 8160
  418. 8174  VTAB 24: INVERSE : PRINT " ANY KEY FOR MENU ";: NORMAL 
  419. 8176  CALL  -756
  420. 8178  GOTO 8102
  421. 8180 :
  422. 9000  REM  AMORTIZATION SCHEDULE
  423. 9001  HOME : VTAB 5: INPUT "YEARLY INTEREST RATE % ";I:I = I/1200: INPUT "MONTHLY PAYMENT ";PMT: INPUT "INITIAL LOAN AMOUNT ";PV
  424. 9002  HOME :DP = 2:G$ =  CHR$(7)
  425. 9003  PRINT  TAB( 5);"PAID TO"; TAB( 15);"PAID"; TAB( 22);"REMAIN"; TAB( 33);"TOTAL"
  426. 9004  PRINT "NO"; TAB( 5);"PRINCIP"; TAB( 14);"TO INT"; TAB( 22);"BALANCE"; TAB( 32);"INTEREST": FOR DOT = 0 TO 39: PRINT ".";: NEXT DOT: POKE 34,3
  427. 9005 OB = PV:K = 1
  428. 9006 A = (1 +I) ^( -K)
  429. 9007 NB = (((A -1)/I) *PMT +PV)/A
  430. 9008  IF NB < = 0  THEN 9014
  431. 9009 PRIN = OB -NB:K$ =  STR$(K):K$ = K$ +"  ": PRINT  LEFT$(K$,3);:P = PRIN:PL = 7: GOSUB 300: PRINT P$;
  432. 9010 IN = PMT -PRIN:P = IN:PL = 9: GOSUB 300: PRINT P$;:P = NB:PL = 10: GOSUB 300: PRINT P$;
  433. 9011 TIN = K *PMT -PV +NB:P = TIN: GOSUB 300: PRINT P$
  434. 9012 K = K +1:OB = NB
  435. 9013  IF  PEEK(37) < >23  THEN 9006
  436. 9014  VTAB 24: INVERSE : PRINT " ESC TO EXIT OR ANY KEY TO CONTINUE ";: NORMAL 
  437. 9015  POKE  -16368,0: GET Z$: IF Z$ < > CHR$(27)  THEN  HOME : GOTO 9006
  438. 9016  POKE 34,0: GOTO 200